package main.剑指OfferⅠ;

import java.util.ArrayList;
import java.util.List;

public class Day2 {
    public static void main(String[] args) {
        System.out.println("剑指Offer06.从尾到头打印链表");
        System.out.println("剑指Offer24.反转链表");
        System.out.println("剑指Offer35.复杂链表的复制");
    }
}

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

//class Node {
//    int val;
//    Node next;
//    Node random;
//
//    public Node(int val) {
//        this.val = val;
//        this.next = null;
//        this.random = null;
//    }
//}
class Offer06{
    public int[] reversePrint(ListNode head) {
        List<Integer> list=new ArrayList<>();
        while (head!=null){
            list.add(head.val);
            head=head.next;
        }
        int[] result=new int[list.size()];
        int size=list.size();
        for (int i=size-1;i>=0;i--){
            result[size-1-i]=list.get(i);
        }
        return result;
    }
}

class Offer24{
    public ListNode reverseList(ListNode head) {
        ListNode pre=new ListNode(0),temp=null;
        while (head!=null) {
            temp = new ListNode(head.val);
            temp.next=pre.next;
            pre.next = temp;
            head = head.next;
        }
        return pre.next;
    }
}
//class Offer35{
//    public Node copyRandomList(Node head) {
//        Node temp=head;
//        Map<Node,Node> map=new HashMap<>();
//        while (temp!=null){//创建新节点一一对应
//            Node curNode=new Node(temp.val);
//            map.put(temp,curNode);
//            temp=temp.next;
//        }
//        temp=head;
//        while (temp!=null){//连接各个节点
//            Node curNode=map.get(temp);
//            curNode.next=map.get(temp.next);
//            curNode.random=map.get(temp.random);
//            temp=temp.next;
//        }
//        return map.get(head);
//    }
//}